// change-password.js
import { userApi } from '../../../services/api'

Page({
  data: {
    oldPassword: '',
    newPassword: '',
    confirmPassword: ''
  },

  onLoad() {
    // 设置导航栏标题
    wx.setNavigationBarTitle({
      title: '修改密码'
    });
  },

  // 输入当前密码
  inputOldPassword(e) {
    this.setData({
      oldPassword: e.detail.value
    });
  },

  // 输入新密码
  inputNewPassword(e) {
    this.setData({
      newPassword: e.detail.value
    });
  },

  // 输入确认密码
  inputConfirmPassword(e) {
    this.setData({
      confirmPassword: e.detail.value
    });
  },

  // 验证密码格式
  validatePassword(password) {
    // 密码长度6-20位
    if (password.length < 6 || password.length > 20) {
      return false;
    }
    return true;
  },

  // 提交修改密码
  submitChangePassword() {
    const { oldPassword, newPassword, confirmPassword } = this.data;

    // 验证输入
    if (!oldPassword) {
      wx.showToast({
        title: '请输入当前密码',
        icon: 'none'
      });
      return;
    }

    if (!newPassword) {
      wx.showToast({
        title: '请输入新密码',
        icon: 'none'
      });
      return;
    }

    if (!confirmPassword) {
      wx.showToast({
        title: '请确认新密码',
        icon: 'none'
      });
      return;
    }

    // 验证新密码格式
    if (!this.validatePassword(newPassword)) {
      wx.showToast({
        title: '新密码长度应为6-20位',
        icon: 'none'
      });
      return;
    }

    // 验证两次新密码是否一致
    if (newPassword !== confirmPassword) {
      wx.showToast({
        title: '两次输入的新密码不一致',
        icon: 'none'
      });
      return;
    }

    // 验证新密码不能与旧密码相同
    if (oldPassword === newPassword) {
      wx.showToast({
        title: '新密码不能与当前密码相同',
        icon: 'none'
      });
      return;
    }

    // 显示加载中
    wx.showLoading({
      title: '修改中...',
      mask: true
    });

    // 调用修改密码接口
    userApi.modifyPwd({
      pwd: oldPassword,
      newPwd: newPassword
    })
      .then(res => {
        if (res.status === 200) {
          wx.showToast({
            title: '密码修改成功',
            icon: 'success',
            duration: 2000,
            success: () => {
              // 延迟返回上一页
              setTimeout(() => {
                wx.navigateBack();
              }, 2000);
            }
          });
        } else {
          throw new Error(res.message || '修改失败');
        }
      })
      .catch(err => {
        console.error('修改密码失败:', err);
        wx.showToast({
          title: err.message || '修改失败',
          icon: 'none'
        });
      })
      .finally(() => {
        wx.hideLoading();
      });
  }
}) 